/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * Lector.java
 *
 * Created on 04/06/2011, 03:51:17 PM
 */
package jpoligonos;

import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.Mongo;
import javax.swing.DefaultCellEditor;
import javax.swing.JComboBox;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPopupMenu;
import javax.swing.JSeparator;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import javscazutilidades.Matematicas.Matematicas;
import org.jpoligonos.beans.Proyecto;
import org.jpoligonos.controller.ProyectoController;

/**
 *
 * @author avbravo
 */
public class Lector extends javax.swing.JFrame {
    
    DefaultTableModel modelo;
    JPopupMenu popupMenu = new JPopupMenu("Menu");
    JMenuItem menuEliminar = new JMenuItem("Eliminar");
    JSeparator separator1 = new javax.swing.JSeparator();
    JMenuItem menuCerrar = new JMenuItem("Cerrar");
    int fila = -1;
    JTextField fieldGrados;
    JComboBox comboRumboLatitud;
    javax.swing.JButton jButton4 = new javax.swing.JButton();
    Integer precision = 4;
    Integer precisionLatitud = 2;
    Integer NumeroDistancias;
    /*
     * 
     */
    String lnumero;
    String ldistancia;
    String lcuadrante;
    String lrumbo;
    String lcoseno;
    String lseno;
    String lnorte;
    String lsur;
    String leste;
    String loeste;
    String lindlatitud;
    String lindlongitud;
    String llatitudcorregida;
    String llongitudcorregida;
    String lcoordenadalatidud;
    String lcoordenadalongitud;
    String ldoblelongitud;
    String ldobleareamas;
    String ldobleareamenos;
    /*
     * mongodb
     */
    Mongo m;
    DB db;
    DBCollection collProyectos;
    DBCollection collMedidas;
    BasicDBObject query;
    DBCursor curProyectos;
    DBCursor curMedidas;
    Proyecto proyecto1 = new Proyecto();
    ProyectoController proyectoController1 = new ProyectoController();

    /** Creates new form Lector */
    public Lector() {
        initComponents();
        
        comboRumboLatitud = new JComboBox();
        comboRumboLatitud.addItem("NE");
        comboRumboLatitud.addItem("NW");
        comboRumboLatitud.addItem("SE");
        comboRumboLatitud.addItem("SW");
        comboRumboLatitud.setSelectedItem("NE");
        
        jButton4.setIcon(new javax.swing.ImageIcon(getClass().getResource("/jpoligonos/resources/run.gif"))); // NOI18N
        jButton4.addActionListener(new java.awt.event.ActionListener() {
            
            public void actionPerformed(java.awt.event.ActionEvent evt) {
//                jButton3ActionPerformed(evt);
            }
        });
        /*
         * modelo para la tabla
         */
        modelo = (DefaultTableModel) jTable1.getModel();
        modelo.isCellEditable(1, 1);
        TableColumn columnCheckBox = jTable1.getColumnModel().getColumn(0);
        columnCheckBox.setPreferredWidth(40);
        menuEliminar.addActionListener(new java.awt.event.ActionListener() {
            
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                //   jMenuItemEliminarActionPerformed(evt);
            }
        });
        fieldGrados = new JTextField();
        fieldGrados.addActionListener(new java.awt.event.ActionListener() {
            
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jTextFieldGradosActionPerformed(evt);
            }
        });
        TableColumn column = jTable1.getColumnModel().getColumn(2);
        column.setPreferredWidth(30);
        column.setCellEditor(new DefaultCellEditor(comboRumboLatitud));
        comboRumboLatitud.addActionListener(new java.awt.event.ActionListener() {
            
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                //  Procesar();
            }
        });
        column = jTable1.getColumnModel().getColumn(3);
        column.setCellEditor(new DefaultCellEditor(fieldGrados));
        column.setPreferredWidth(80);
        
        column = jTable1.getColumnModel().getColumn(4);
        
        column.setPreferredWidth(80);
        column = jTable1.getColumnModel().getColumn(5);
        
        column.setPreferredWidth(80);
        try {
            m = new Mongo(SesionLocal.getIpmongodb(), SesionLocal.getPuertomongodb());
            db = m.getDB("poligonos");
            collProyectos = db.getCollection("proyectos");
            collMedidas = db.getCollection("medidas");
            query = new BasicDBObject();
            curProyectos = collProyectos.find();
            curMedidas = collMedidas.find();
            
            
            CargarProyectos();
        } catch (Exception ex) {
            Mensajeria.MensajeError(ex, "Conectando mongodb");
        }
        
        
        
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        abstractAreaEffect1 = new org.jdesktop.swingx.painter.effects.AbstractAreaEffect();
        jPanel1 = new javax.swing.JPanel();
        jToolBar1 = new javax.swing.JToolBar();
        jButtonAdd = new javax.swing.JButton();
        jButtonEliminar = new javax.swing.JButton();
        jButtonActualizar = new javax.swing.JButton();
        jButtonProcess = new javax.swing.JButton();
        jButtonGuardar = new javax.swing.JButton();
        jButtonReporte = new javax.swing.JButton();
        jComboBoxProyectos = new javax.swing.JComboBox();
        jButtonBuscar = new javax.swing.JButton();
        jButtonLimpiar = new javax.swing.JButton();
        jButtonEliminarProyecto = new javax.swing.JButton();
        jButtonEliminarTodosProyectos = new javax.swing.JButton();
        jButtonRegresar = new javax.swing.JButton();
        jPanel4 = new javax.swing.JPanel();
        jLabel5 = new javax.swing.JLabel();
        jLabel6 = new javax.swing.JLabel();
        jTextFieldLatitudInicial = new javax.swing.JTextField();
        jTextFieldLongitudInicial = new javax.swing.JTextField();
        jLabel25 = new javax.swing.JLabel();
        jPanel6 = new javax.swing.JPanel();
        jLabel9 = new javax.swing.JLabel();
        jTextFieldPrecisionRendondeo = new javax.swing.JTextField();
        jLabel10 = new javax.swing.JLabel();
        jTextFieldLatitudPrecision = new javax.swing.JTextField();
        jLabel24 = new javax.swing.JLabel();
        jTabbedPane1 = new javax.swing.JTabbedPane();
        jPanelProyectos = new javax.swing.JPanel();
        jPanelProyectosinterno = new javax.swing.JPanel();
        jLabel16 = new javax.swing.JLabel();
        jTextFieldProyecto = new javax.swing.JTextField();
        jLabel17 = new javax.swing.JLabel();
        jLabel18 = new javax.swing.JLabel();
        jLabel19 = new javax.swing.JLabel();
        jTextFieldProvincia = new javax.swing.JTextField();
        jTextFieldDistrito = new javax.swing.JTextField();
        jTextFieldCorregimiento = new javax.swing.JTextField();
        jLabel20 = new javax.swing.JLabel();
        jLabel21 = new javax.swing.JLabel();
        jLabel22 = new javax.swing.JLabel();
        jTextFieldCalculado = new javax.swing.JTextField();
        jTextFieldFecha = new javax.swing.JTextField();
        jTextFieldRevisado = new javax.swing.JTextField();
        jPanelCalculos = new javax.swing.JPanel();
        jPanel2 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jTextFieldTotalNorte = new javax.swing.JTextField();
        jTextFieldTotalSur = new javax.swing.JTextField();
        jPanel3 = new javax.swing.JPanel();
        jLabel3 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        jTextFieldTotalEste = new javax.swing.JTextField();
        jTextFieldTotalOeste = new javax.swing.JTextField();
        jPanelTotalesCorregidas = new javax.swing.JPanel();
        jLabel7 = new javax.swing.JLabel();
        jLabel8 = new javax.swing.JLabel();
        jTextFieldTotalLatitudCorregida = new javax.swing.JTextField();
        jTextFieldTotalLongitudCorregida = new javax.swing.JTextField();
        jPanelCorreccion = new javax.swing.JPanel();
        jLabel11 = new javax.swing.JLabel();
        jTextFieldElat = new javax.swing.JTextField();
        jLabel12 = new javax.swing.JLabel();
        jTextFieldElong = new javax.swing.JTextField();
        jLabel13 = new javax.swing.JLabel();
        jTextFieldEc = new javax.swing.JTextField();
        jLabel14 = new javax.swing.JLabel();
        jTextFieldPrec = new javax.swing.JTextField();
        jLabel15 = new javax.swing.JLabel();
        jTextFieldPerimetro = new javax.swing.JTextField();
        jPanelDobleArea = new javax.swing.JPanel();
        jLabel26 = new javax.swing.JLabel();
        jLabel27 = new javax.swing.JLabel();
        jTextFieldTotalDobleAreaMas = new javax.swing.JTextField();
        jTextFieldTotalDobleAreaMenos = new javax.swing.JTextField();
        jLabel28 = new javax.swing.JLabel();
        jTextFieldA = new javax.swing.JTextField();
        jLabel23 = new javax.swing.JLabel();
        jTextFieldNumeroDistancias = new javax.swing.JTextField();
        jSeparator1 = new javax.swing.JSeparator();
        jScrollPane2 = new javax.swing.JScrollPane();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTable1 = new javax.swing.JTable();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Datos"));

        jToolBar1.setRollover(true);

        jButtonAdd.setIcon(new javax.swing.ImageIcon(getClass().getResource("/jpoligonos/resources/icon_add.gif"))); // NOI18N
        jButtonAdd.setToolTipText("Agregar fila");
        jButtonAdd.setFocusable(false);
        jButtonAdd.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jButtonAdd.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jButtonAdd.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonAddActionPerformed(evt);
            }
        });
        jToolBar1.add(jButtonAdd);

        jButtonEliminar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/jpoligonos/resources/deleterow.png"))); // NOI18N
        jButtonEliminar.setToolTipText("Eliminar ultima fila");
        jButtonEliminar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonEliminarActionPerformed(evt);
            }
        });
        jToolBar1.add(jButtonEliminar);

        jButtonActualizar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/jpoligonos/resources/icon-refresh.gif"))); // NOI18N
        jButtonActualizar.setToolTipText("Actualizar");
        jButtonActualizar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonActualizarActionPerformed(evt);
            }
        });
        jToolBar1.add(jButtonActualizar);

        jButtonProcess.setIcon(new javax.swing.ImageIcon(getClass().getResource("/jpoligonos/resources/process-icon.png"))); // NOI18N
        jButtonProcess.setToolTipText("Corregir Lat/Long");
        jButtonProcess.setFocusable(false);
        jButtonProcess.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jButtonProcess.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jButtonProcess.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonProcessActionPerformed(evt);
            }
        });
        jToolBar1.add(jButtonProcess);

        jButtonGuardar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/jpoligonos/resources/save_icon.png"))); // NOI18N
        jButtonGuardar.setToolTipText("Guardar");
        jButtonGuardar.setEnabled(false);
        jButtonGuardar.setFocusable(false);
        jButtonGuardar.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jButtonGuardar.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jButtonGuardar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonGuardarActionPerformed(evt);
            }
        });
        jToolBar1.add(jButtonGuardar);

        jButtonReporte.setIcon(new javax.swing.ImageIcon(getClass().getResource("/jpoligonos/resources/print-icon.png"))); // NOI18N
        jButtonReporte.setToolTipText("Reporte");
        jButtonReporte.setEnabled(false);
        jButtonReporte.setFocusable(false);
        jButtonReporte.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jButtonReporte.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jToolBar1.add(jButtonReporte);

        jToolBar1.add(jComboBoxProyectos);

        jButtonBuscar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/jpoligonos/resources/search_icon.gif"))); // NOI18N
        jButtonBuscar.setToolTipText("Buscar proyectos guardados");
        jButtonBuscar.setFocusable(false);
        jButtonBuscar.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jButtonBuscar.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jButtonBuscar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonBuscarActionPerformed(evt);
            }
        });
        jToolBar1.add(jButtonBuscar);

        jButtonLimpiar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/jpoligonos/resources/clear.png"))); // NOI18N
        jButtonLimpiar.setToolTipText("Limpiar datos");
        jButtonLimpiar.setFocusable(false);
        jButtonLimpiar.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jButtonLimpiar.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jButtonLimpiar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonLimpiarActionPerformed(evt);
            }
        });
        jToolBar1.add(jButtonLimpiar);

        jButtonEliminarProyecto.setIcon(new javax.swing.ImageIcon(getClass().getResource("/jpoligonos/resources/icon_delete.png"))); // NOI18N
        jButtonEliminarProyecto.setToolTipText("Eliminar este proyecto");
        jButtonEliminarProyecto.setFocusable(false);
        jButtonEliminarProyecto.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jButtonEliminarProyecto.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jButtonEliminarProyecto.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonEliminarProyectoActionPerformed(evt);
            }
        });
        jToolBar1.add(jButtonEliminarProyecto);

        jButtonEliminarTodosProyectos.setIcon(new javax.swing.ImageIcon(getClass().getResource("/jpoligonos/resources/delete.gif"))); // NOI18N
        jButtonEliminarTodosProyectos.setToolTipText("Eliminar todos Proyectos");
        jButtonEliminarTodosProyectos.setFocusable(false);
        jButtonEliminarTodosProyectos.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jButtonEliminarTodosProyectos.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jButtonEliminarTodosProyectos.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonEliminarTodosProyectosActionPerformed(evt);
            }
        });
        jToolBar1.add(jButtonEliminarTodosProyectos);

        jButtonRegresar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/jpoligonos/resources/exit_icon.png"))); // NOI18N
        jButtonRegresar.setToolTipText("Regresar");
        jButtonRegresar.setFocusable(false);
        jButtonRegresar.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jButtonRegresar.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jButtonRegresar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonRegresarActionPerformed(evt);
            }
        });
        jToolBar1.add(jButtonRegresar);

        jPanel4.setBorder(javax.swing.BorderFactory.createEtchedBorder());

        jLabel5.setText("Latitud");

        jLabel6.setText("Longitud");

        jTextFieldLatitudInicial.setText("100");

        jTextFieldLongitudInicial.setText("100");

        jLabel25.setText("Inicial");

        javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
        jPanel4.setLayout(jPanel4Layout);
        jPanel4Layout.setHorizontalGroup(
            jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel4Layout.createSequentialGroup()
                .addComponent(jLabel25)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLabel5)
                .addGap(18, 18, 18)
                .addComponent(jTextFieldLatitudInicial, javax.swing.GroupLayout.PREFERRED_SIZE, 77, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(jLabel6)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jTextFieldLongitudInicial, javax.swing.GroupLayout.PREFERRED_SIZE, 66, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(37, Short.MAX_VALUE))
        );
        jPanel4Layout.setVerticalGroup(
            jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                .addComponent(jTextFieldLatitudInicial, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addComponent(jLabel5)
                .addComponent(jLabel6)
                .addComponent(jTextFieldLongitudInicial, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addComponent(jLabel25))
        );

        jPanel6.setBorder(javax.swing.BorderFactory.createEtchedBorder());

        jLabel9.setText("Sen/Cos");

        jTextFieldPrecisionRendondeo.setText("5");
        jTextFieldPrecisionRendondeo.setToolTipText("Precision para la latitud");

        jLabel10.setText("Lat/Lon");

        jTextFieldLatitudPrecision.setText("2");
        jTextFieldLatitudPrecision.setToolTipText("Presicion para la longitud");

        jLabel24.setText("Redondeo");

        javax.swing.GroupLayout jPanel6Layout = new javax.swing.GroupLayout(jPanel6);
        jPanel6.setLayout(jPanel6Layout);
        jPanel6Layout.setHorizontalGroup(
            jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel6Layout.createSequentialGroup()
                .addComponent(jLabel24)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLabel9)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jTextFieldPrecisionRendondeo, javax.swing.GroupLayout.PREFERRED_SIZE, 66, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLabel10)
                .addGap(18, 18, 18)
                .addComponent(jTextFieldLatitudPrecision, javax.swing.GroupLayout.PREFERRED_SIZE, 54, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(34, Short.MAX_VALUE))
        );
        jPanel6Layout.setVerticalGroup(
            jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                .addComponent(jLabel9)
                .addComponent(jTextFieldPrecisionRendondeo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addComponent(jLabel10)
                .addComponent(jTextFieldLatitudPrecision, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addComponent(jLabel24))
        );

        jPanelProyectosinterno.setBorder(javax.swing.BorderFactory.createTitledBorder("Datos"));

        jLabel16.setText("Proyecto");

        jLabel17.setText("Provincia");

        jLabel18.setText("Distrito");

        jLabel19.setText("Corregimiento");

        jTextFieldCorregimiento.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jTextFieldCorregimientoActionPerformed(evt);
            }
        });

        jLabel20.setText("Calculado");

        jLabel21.setText("Fecha");

        jLabel22.setText("Revisado");

        jTextFieldRevisado.setText("---");
        jTextFieldRevisado.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jTextFieldRevisadoActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanelProyectosinternoLayout = new javax.swing.GroupLayout(jPanelProyectosinterno);
        jPanelProyectosinterno.setLayout(jPanelProyectosinternoLayout);
        jPanelProyectosinternoLayout.setHorizontalGroup(
            jPanelProyectosinternoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelProyectosinternoLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanelProyectosinternoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanelProyectosinternoLayout.createSequentialGroup()
                        .addComponent(jLabel19)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jTextFieldCorregimiento, javax.swing.GroupLayout.PREFERRED_SIZE, 461, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanelProyectosinternoLayout.createSequentialGroup()
                        .addGroup(jPanelProyectosinternoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel18)
                            .addComponent(jLabel17)
                            .addComponent(jLabel16))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 47, Short.MAX_VALUE)
                        .addGroup(jPanelProyectosinternoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(jTextFieldProvincia, javax.swing.GroupLayout.PREFERRED_SIZE, 412, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jTextFieldDistrito, javax.swing.GroupLayout.PREFERRED_SIZE, 376, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jTextFieldProyecto, javax.swing.GroupLayout.PREFERRED_SIZE, 401, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(41, 41, 41)
                        .addGroup(jPanelProyectosinternoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel20)
                            .addComponent(jLabel21)
                            .addComponent(jLabel22))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanelProyectosinternoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jTextFieldFecha, javax.swing.GroupLayout.PREFERRED_SIZE, 265, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jTextFieldCalculado, javax.swing.GroupLayout.PREFERRED_SIZE, 333, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jTextFieldRevisado, javax.swing.GroupLayout.PREFERRED_SIZE, 367, javax.swing.GroupLayout.PREFERRED_SIZE))))
                .addContainerGap(151, Short.MAX_VALUE))
        );
        jPanelProyectosinternoLayout.setVerticalGroup(
            jPanelProyectosinternoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelProyectosinternoLayout.createSequentialGroup()
                .addGroup(jPanelProyectosinternoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanelProyectosinternoLayout.createSequentialGroup()
                        .addGroup(jPanelProyectosinternoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel16)
                            .addComponent(jTextFieldProyecto, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanelProyectosinternoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel17)
                            .addComponent(jLabel21)
                            .addComponent(jTextFieldProvincia, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addGroup(jPanelProyectosinternoLayout.createSequentialGroup()
                        .addGroup(jPanelProyectosinternoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel20)
                            .addComponent(jTextFieldCalculado, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jTextFieldFecha, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(jPanelProyectosinternoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel18)
                    .addComponent(jLabel22)
                    .addComponent(jTextFieldRevisado, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jTextFieldDistrito, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(jPanelProyectosinternoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel19)
                    .addComponent(jTextFieldCorregimiento, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout jPanelProyectosLayout = new javax.swing.GroupLayout(jPanelProyectos);
        jPanelProyectos.setLayout(jPanelProyectosLayout);
        jPanelProyectosLayout.setHorizontalGroup(
            jPanelProyectosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelProyectosLayout.createSequentialGroup()
                .addComponent(jPanelProyectosinterno, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        jPanelProyectosLayout.setVerticalGroup(
            jPanelProyectosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelProyectosLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanelProyectosinterno, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        jTabbedPane1.addTab("Proyecto", jPanelProyectos);

        jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Latitud"));

        jLabel1.setText("Norte");

        jLabel2.setText("Sur");

        jTextFieldTotalNorte.setEditable(false);

        jTextFieldTotalSur.setEditable(false);
        jTextFieldTotalSur.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jTextFieldTotalSurActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addComponent(jLabel1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jTextFieldTotalNorte, javax.swing.GroupLayout.PREFERRED_SIZE, 94, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLabel2)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jTextFieldTotalSur, javax.swing.GroupLayout.PREFERRED_SIZE, 99, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(41, Short.MAX_VALUE))
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel1)
                    .addComponent(jTextFieldTotalNorte, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel2)
                    .addComponent(jTextFieldTotalSur, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("Longitud"));

        jLabel3.setText("Este");

        jLabel4.setText("Oeste");

        jTextFieldTotalEste.setEditable(false);

        jTextFieldTotalOeste.setEditable(false);

        javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
        jPanel3.setLayout(jPanel3Layout);
        jPanel3Layout.setHorizontalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel3Layout.createSequentialGroup()
                .addComponent(jLabel3)
                .addGap(24, 24, 24)
                .addComponent(jTextFieldTotalEste, javax.swing.GroupLayout.PREFERRED_SIZE, 87, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(35, 35, 35)
                .addComponent(jLabel4)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 14, Short.MAX_VALUE)
                .addComponent(jTextFieldTotalOeste, javax.swing.GroupLayout.PREFERRED_SIZE, 91, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(40, 40, 40))
        );
        jPanel3Layout.setVerticalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel3Layout.createSequentialGroup()
                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel3)
                    .addComponent(jTextFieldTotalEste, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel4)
                    .addComponent(jTextFieldTotalOeste, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout jPanelCalculosLayout = new javax.swing.GroupLayout(jPanelCalculos);
        jPanelCalculos.setLayout(jPanelCalculosLayout);
        jPanelCalculosLayout.setHorizontalGroup(
            jPanelCalculosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelCalculosLayout.createSequentialGroup()
                .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(261, Short.MAX_VALUE))
        );
        jPanelCalculosLayout.setVerticalGroup(
            jPanelCalculosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelCalculosLayout.createSequentialGroup()
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addGroup(jPanelCalculosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(118, 118, 118))
        );

        jTabbedPane1.addTab("Calculos", jPanelCalculos);

        jPanelTotalesCorregidas.setBorder(javax.swing.BorderFactory.createTitledBorder("Corregidas"));

        jLabel7.setText("Latitud");

        jLabel8.setText("Longitud");

        jTextFieldTotalLatitudCorregida.setEditable(false);

        jTextFieldTotalLongitudCorregida.setEditable(false);
        jTextFieldTotalLongitudCorregida.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jTextFieldTotalLongitudCorregidaActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanelTotalesCorregidasLayout = new javax.swing.GroupLayout(jPanelTotalesCorregidas);
        jPanelTotalesCorregidas.setLayout(jPanelTotalesCorregidasLayout);
        jPanelTotalesCorregidasLayout.setHorizontalGroup(
            jPanelTotalesCorregidasLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelTotalesCorregidasLayout.createSequentialGroup()
                .addComponent(jLabel7)
                .addGap(12, 12, 12)
                .addComponent(jTextFieldTotalLatitudCorregida, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(46, 46, 46)
                .addComponent(jLabel8)
                .addGap(18, 18, 18)
                .addComponent(jTextFieldTotalLongitudCorregida, javax.swing.GroupLayout.PREFERRED_SIZE, 119, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(568, Short.MAX_VALUE))
        );
        jPanelTotalesCorregidasLayout.setVerticalGroup(
            jPanelTotalesCorregidasLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelTotalesCorregidasLayout.createSequentialGroup()
                .addGroup(jPanelTotalesCorregidasLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel7)
                    .addComponent(jTextFieldTotalLatitudCorregida, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel8)
                    .addComponent(jTextFieldTotalLongitudCorregida, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(142, Short.MAX_VALUE))
        );

        jTabbedPane1.addTab("Totales Corregidas", jPanelTotalesCorregidas);

        jPanelCorreccion.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));

        jLabel11.setText("Elat");

        jTextFieldElat.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jTextFieldElatActionPerformed(evt);
            }
        });

        jLabel12.setText("ELong");

        jLabel13.setText("Ec");

        jLabel14.setText("Prec.");

        jLabel15.setText("Per.");

        javax.swing.GroupLayout jPanelCorreccionLayout = new javax.swing.GroupLayout(jPanelCorreccion);
        jPanelCorreccion.setLayout(jPanelCorreccionLayout);
        jPanelCorreccionLayout.setHorizontalGroup(
            jPanelCorreccionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelCorreccionLayout.createSequentialGroup()
                .addComponent(jLabel11)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jTextFieldElat, javax.swing.GroupLayout.PREFERRED_SIZE, 89, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(21, 21, 21)
                .addComponent(jLabel12)
                .addGap(18, 18, 18)
                .addComponent(jTextFieldElong, javax.swing.GroupLayout.PREFERRED_SIZE, 101, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(28, 28, 28)
                .addComponent(jLabel13)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jTextFieldEc, javax.swing.GroupLayout.PREFERRED_SIZE, 82, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(jLabel15)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jTextFieldPerimetro, javax.swing.GroupLayout.PREFERRED_SIZE, 77, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLabel14)
                .addGap(18, 18, 18)
                .addComponent(jTextFieldPrec, javax.swing.GroupLayout.PREFERRED_SIZE, 86, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(254, Short.MAX_VALUE))
        );
        jPanelCorreccionLayout.setVerticalGroup(
            jPanelCorreccionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelCorreccionLayout.createSequentialGroup()
                .addGroup(jPanelCorreccionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel11)
                    .addComponent(jTextFieldElat, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jTextFieldElong, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel13)
                    .addComponent(jLabel12)
                    .addComponent(jTextFieldEc, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel15)
                    .addComponent(jTextFieldPerimetro, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel14)
                    .addComponent(jTextFieldPrec, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(165, Short.MAX_VALUE))
        );

        jTabbedPane1.addTab("Correccion", jPanelCorreccion);

        jPanelDobleArea.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));

        jLabel26.setText("DobleArea+");

        jLabel27.setText("DobleArea-");

        jTextFieldTotalDobleAreaMas.setEditable(false);

        jTextFieldTotalDobleAreaMenos.setEditable(false);
        jTextFieldTotalDobleAreaMenos.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jTextFieldTotalDobleAreaMenosActionPerformed(evt);
            }
        });

        jLabel28.setText("A");

        jTextFieldA.setEditable(false);
        jTextFieldA.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jTextFieldAActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanelDobleAreaLayout = new javax.swing.GroupLayout(jPanelDobleArea);
        jPanelDobleArea.setLayout(jPanelDobleAreaLayout);
        jPanelDobleAreaLayout.setHorizontalGroup(
            jPanelDobleAreaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelDobleAreaLayout.createSequentialGroup()
                .addComponent(jLabel26)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jTextFieldTotalDobleAreaMas, javax.swing.GroupLayout.PREFERRED_SIZE, 93, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(3, 3, 3)
                .addComponent(jLabel27)
                .addGap(18, 18, 18)
                .addComponent(jTextFieldTotalDobleAreaMenos, javax.swing.GroupLayout.PREFERRED_SIZE, 91, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLabel28)
                .addGap(18, 18, 18)
                .addComponent(jTextFieldA, javax.swing.GroupLayout.PREFERRED_SIZE, 79, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(495, Short.MAX_VALUE))
        );
        jPanelDobleAreaLayout.setVerticalGroup(
            jPanelDobleAreaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelDobleAreaLayout.createSequentialGroup()
                .addGroup(jPanelDobleAreaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel26)
                    .addComponent(jTextFieldTotalDobleAreaMas, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel27)
                    .addComponent(jTextFieldTotalDobleAreaMenos, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel28)
                    .addComponent(jTextFieldA, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(165, Short.MAX_VALUE))
        );

        jTabbedPane1.addTab("Doble Area", jPanelDobleArea);

        jLabel23.setText("No.Distancias");

        jScrollPane2.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
        jScrollPane2.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);

        jScrollPane1.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
        jScrollPane1.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);

        jTable1.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Est", "Dist", "Cuad", "Rumbo", "Cos", "Sen", "N", "S", "E", "O", "ind lat", "ind long", "Lat. Correg", "Lon. Correg", "Coord.Lat.", "Coord.Long", "Doble Lon", "D. Area +", "D. Area -"
            }
        ));
        jScrollPane1.setViewportView(jTable1);

        jScrollPane2.setViewportView(jScrollPane1);

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jToolBar1, javax.swing.GroupLayout.PREFERRED_SIZE, 504, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(jLabel23)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jTextFieldNumeroDistancias, javax.swing.GroupLayout.PREFERRED_SIZE, 69, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(jPanel6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                            .addComponent(jTabbedPane1, javax.swing.GroupLayout.Alignment.LEADING, 0, 0, Short.MAX_VALUE)
                            .addComponent(jScrollPane2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 1004, Short.MAX_VALUE))
                        .addGap(104, 104, 104)
                        .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 246, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addComponent(jToolBar1, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jLabel23)
                        .addComponent(jTextFieldNumeroDistancias, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addComponent(jPanel6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 357, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jTabbedPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 235, Short.MAX_VALUE)
                .addGap(32, 32, 32))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 1099, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void jButtonAddActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonAddActionPerformed
        // TODO add your handling code here:
        try {
            String e1 = jTextFieldNumeroDistancias.getText();
            if (e1 == null || e1.equals("")) {
                Mensajeria.Mensaje("Debe ingresar el numero de distancias");
                jTextFieldNumeroDistancias.requestFocus();
                return;
            }
            this.NumeroDistancias = Integer.parseInt(e1) - 1;
            String t = jTextFieldPrecisionRendondeo.getText();
            if (t == null || t.equals("")) {
                Mensajeria.Mensaje("Debe ingresar la presicion");
                jTextFieldPrecisionRendondeo.requestFocus();
                return;
                
            }
            precision = Integer.parseInt(jTextFieldPrecisionRendondeo.getText());
            if (precision == null) {
                Mensajeria.Mensaje("Ingrese un numero entero valido en la precision");
                jTextFieldPrecisionRendondeo.requestFocus();
                return;
            }
            String tl = jTextFieldLatitudPrecision.getText();
            if (tl == null || tl.equals("")) {
                Mensajeria.Mensaje("Debe ingresar la presicion de la latitud");
                jTextFieldLatitudPrecision.requestFocus();
                return;
                
            }
            precisionLatitud = Integer.parseInt(jTextFieldLatitudPrecision.getText());
            if (precisionLatitud == null) {
                Mensajeria.Mensaje("Ingrese un numero entero valido en la precision");
                jTextFieldLatitudPrecision.requestFocus();
                return;
            }
            
            AgregarFila();
        } catch (Exception ex) {
            Mensajeria.MensajeError(ex, "Boton Agregar()");
        }
        
    }//GEN-LAST:event_jButtonAddActionPerformed
    
    private void jTextFieldTotalSurActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTextFieldTotalSurActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_jTextFieldTotalSurActionPerformed
    
    private void jButtonEliminarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonEliminarActionPerformed
        // TODO add your handling code here:
        EliminarUltimaFila();
    }//GEN-LAST:event_jButtonEliminarActionPerformed
    
    private void jButtonRegresarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonRegresarActionPerformed
        // TODO add your handling code here:
        dispose();
    }//GEN-LAST:event_jButtonRegresarActionPerformed
    
    private void jButtonActualizarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonActualizarActionPerformed
        // TODO add your handling code here:
        Actualizar();
    }//GEN-LAST:event_jButtonActualizarActionPerformed
    
    private void jButtonGuardarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonGuardarActionPerformed
        // TODO add your handling code here:
        try {
            
            String proyecto = jTextFieldProyecto.getText();
            if (proyecto == null || proyecto.equals("")) {
                Mensajeria.Mensaje("Ingrese el nombre del proyecto");
                jTextFieldProyecto.requestFocus();
                return;
            }
            String provincia = jTextFieldProvincia.getText();
            if (provincia == null || provincia.equals("")) {
                Mensajeria.Mensaje("Ingrese la provincia");
                jTextFieldProvincia.requestFocus();
                return;
            }
            String distrito = jTextFieldDistrito.getText();
            if (distrito == null || distrito.equals("")) {
                Mensajeria.Mensaje("Ingrese el distrito");
                jTextFieldDistrito.requestFocus();
                return;
            }
            
            String corregimiento = jTextFieldCorregimiento.getText();
            if (corregimiento == null || corregimiento.equals("")) {
                Mensajeria.Mensaje("Ingrese el corregimiento");
                jTextFieldCorregimiento.requestFocus();
                return;
            }
            String calculado = jTextFieldCalculado.getText();
            if (calculado == null || calculado.equals("")) {
                Mensajeria.Mensaje("Ingrese el calculado");
                jTextFieldCalculado.requestFocus();
                return;
            }
            String fecha = jTextFieldFecha.getText();
            if (fecha == null || fecha.equals("")) {
                Mensajeria.Mensaje("Ingrese la fecha");
                jTextFieldFecha.requestFocus();
                return;
            }
            String revisado = jTextFieldRevisado.getText();
            if (revisado == null || revisado.equals("")) {
                Mensajeria.Mensaje("Ingrese el revisado");
                jTextFieldRevisado.requestFocus();
                return;
            }
            String numerodistancias = jTextFieldNumeroDistancias.getText();
            if (numerodistancias == null || numerodistancias.equals("")) {
                Mensajeria.Mensaje("Ingrese el numero de distancias");
                jTextFieldNumeroDistancias.requestFocus();
                return;
            }
            
            
            String presicionredondeo = jTextFieldPrecisionRendondeo.getText();
            if (presicionredondeo == null || presicionredondeo.equals("")) {
                Mensajeria.Mensaje("Ingrese el redondeo seno/coseno");
                jTextFieldPrecisionRendondeo.requestFocus();
                return;
            }
            
            String latitudprecision = jTextFieldLatitudPrecision.getText();
            if (latitudprecision == null || latitudprecision.equals("")) {
                Mensajeria.Mensaje("Ingrese la presicion de redondeo de la latitud");
                jTextFieldLatitudPrecision.requestFocus();
                return;
            }
            String latitudinicial = jTextFieldLatitudInicial.getText();
            if (latitudinicial == null || latitudinicial.equals("")) {
                Mensajeria.Mensaje("Ingrese la latitud inicial");
                jTextFieldLatitudInicial.requestFocus();
                return;
            }
            String longitudinicial = jTextFieldLongitudInicial.getText();
            if (longitudinicial == null || longitudinicial.equals("")) {
                Mensajeria.Mensaje("Ingrese la longuitud inicial");
                jTextFieldLongitudInicial.requestFocus();
                return;
            }
            /*
             * totales
             */
            String totalnorte = jTextFieldTotalNorte.getText();
            if (totalnorte == null || totalnorte.equals("")) {
                Mensajeria.Mensaje("No se ha calculado el total norte");
                return;
            }
            String totalsur = jTextFieldTotalSur.getText();
            if (totalsur == null || totalsur.equals("")) {
                Mensajeria.Mensaje("No se ha calculado el total sur");
                
                return;
            }
            String totaleste = jTextFieldTotalEste.getText();
            if (totaleste == null || totaleste.equals("")) {
                Mensajeria.Mensaje("No se ha calculado el total este");
                
                return;
            }
            String totaloeste = jTextFieldTotalOeste.getText();
            if (totaloeste == null || totaloeste.equals("")) {
                Mensajeria.Mensaje("No se ha calculado el total oeste");
                
                return;
            }
            String elat = jTextFieldElat.getText();
            if (elat == null || elat.equals("")) {
                Mensajeria.Mensaje("No se ha calculado el elat");
                
                return;
            }
            
            String elong = jTextFieldElong.getText();
            if (elong == null || elong.equals("")) {
                Mensajeria.Mensaje("No se ha calculado el elong");
                
                return;
            }
            String ec = jTextFieldEc.getText();
            if (ec == null || ec.equals("")) {
                Mensajeria.Mensaje("No se ha calculado el ec");
                
                return;
            }
            String perimetro = jTextFieldPerimetro.getText();
            if (perimetro == null || perimetro.equals("")) {
                Mensajeria.Mensaje("No se ha calculado el perimetro");
                
                return;
            }
            String prec = jTextFieldPrec.getText();
            if (prec == null || prec.equals("")) {
                Mensajeria.Mensaje("No se ha calculado el prec");
                
                return;
            }
            String totallatitudcorregida = jTextFieldTotalLatitudCorregida.getText();
            if (totallatitudcorregida == null || totallatitudcorregida.equals("")) {
                Mensajeria.Mensaje("No se ha calculado total latitud corregida");
                
                return;
            }
            String totallongitudcorregida = jTextFieldTotalLongitudCorregida.getText();
            if (totallongitudcorregida == null || totallongitudcorregida.equals("")) {
                Mensajeria.Mensaje("No se ha calculado total longitud corregida");
                
                return;
            }
            
            String totalAreaMas = jTextFieldTotalDobleAreaMas.getText();
            if (totalAreaMas == null || totalAreaMas.equals("")) {
                Mensajeria.Mensaje("No se ha calculado total doble area +");
                
                return;
            }
            String totalAreaMenos = jTextFieldTotalDobleAreaMenos.getText();
            if (totalAreaMenos == null || totalAreaMenos.equals("")) {
                Mensajeria.Mensaje("No se ha calculado total doble area -");
                
                return;
            }
            String a = jTextFieldA.getText();
            if (a == null || a.equals("")) {
                Mensajeria.Mensaje("No se ha calculado a");
                
                return;
            }
            
            query.put("proyecto", proyecto);
            
            curProyectos = collProyectos.find(query);
            boolean encontrado = false;
            while (curProyectos.hasNext()) {
                encontrado = true;
                break;
            }
            if (encontrado) {
                Mensajeria.Mensaje("Existe un proyecto con ese nombre, no se puede crear");
                return;
            }
            BasicDBObject doc = new BasicDBObject();
            
            
            doc.put("proyecto", proyecto);
            doc.put("provincia", provincia);
            doc.put("distrito", distrito);
            doc.put("corregimiento", corregimiento);
            doc.put("calculado", calculado);
            doc.put("fecha", fecha);
            doc.put("revisado", revisado);
            doc.put("numerodistancias", numerodistancias);
            doc.put("presicionredondeo", presicionredondeo);
            doc.put("latitudprecision", latitudprecision);
            doc.put("latitudinicial", latitudinicial);
            doc.put("longitudinicial", longitudinicial);
            doc.put("totalnorte", totalnorte);
            doc.put("totalsur", totalsur);
            doc.put("totaleste", totaleste);
            doc.put("totaloeste", totaleste);
            doc.put("elat", elat);
            doc.put("elong", elong);
            doc.put("ec", ec);
            doc.put("perimetro", perimetro);
            doc.put("prec", prec);
            doc.put("totallatitudcorregida", totallatitudcorregida);
            doc.put("totallongitudcorregida", totallongitudcorregida);
            doc.put("totalareamas", totalAreaMas);
            doc.put("totalareamenos", totalAreaMenos);
            doc.put("a", a);
            collProyectos.insert(doc);
            int n = jTable1.getRowCount();
            if (n == 0) {
                Mensajeria.Mensaje("No existe ninguna fila en la tabla");
                return;
            }

            /*}
             * pasar los datos de la tabla
             */
            
            
            for (int i = 0; i < n; i++) {
                this.fila = i;
                BasicDBObject docMedidas = new BasicDBObject();
                lnumero = String.valueOf(jTable1.getValueAt(fila, 0));
                ldistancia = String.valueOf(jTable1.getValueAt(fila, 1));
                lcuadrante = String.valueOf(jTable1.getValueAt(fila, 2));
                lrumbo = String.valueOf(jTable1.getValueAt(fila, 3));
                lcoseno = String.valueOf(jTable1.getValueAt(fila, 4));
                lseno = String.valueOf(jTable1.getValueAt(fila, 5));
                lnorte = String.valueOf(jTable1.getValueAt(fila, 6));
                lsur = String.valueOf(jTable1.getValueAt(fila, 7));
                leste = String.valueOf(jTable1.getValueAt(fila, 8));
                loeste = String.valueOf(jTable1.getValueAt(fila, 9));
                lindlatitud = String.valueOf(jTable1.getValueAt(fila, 10));
                lindlongitud = String.valueOf(jTable1.getValueAt(fila, 11));
                llatitudcorregida = String.valueOf(jTable1.getValueAt(fila, 12));
                llongitudcorregida = String.valueOf(jTable1.getValueAt(fila, 13));
                lcoordenadalatidud = String.valueOf(jTable1.getValueAt(fila, 14));
                lcoordenadalongitud = String.valueOf(jTable1.getValueAt(fila, 15));
                ldoblelongitud = String.valueOf(jTable1.getValueAt(fila, 16));
                ldobleareamas = String.valueOf(jTable1.getValueAt(fila, 17));
                ldobleareamenos = String.valueOf(jTable1.getValueAt(fila, 18));
                
                docMedidas.put("proyecto", proyecto);
                docMedidas.put("numero", lnumero);
                docMedidas.put("distancia", ldistancia);
                docMedidas.put("cuadrante", lcuadrante);
                docMedidas.put("rumbo", lrumbo);
                docMedidas.put("coseno", lcoseno);
                docMedidas.put("seno", lseno);
                docMedidas.put("norte", lnorte);
                docMedidas.put("sur", lsur);
                docMedidas.put("este", leste);
                docMedidas.put("oeste", loeste);
                docMedidas.put("indlatitud", lindlatitud);
                docMedidas.put("indlongitud", lindlongitud);
                docMedidas.put("latitudcorregida", llatitudcorregida);
                docMedidas.put("longitudcorregida", llongitudcorregida);
                docMedidas.put("coordenadalatidud", lcoordenadalatidud);
                docMedidas.put("coordenadalongitud", lcoordenadalongitud);
                docMedidas.put("doblelongitud", ldoblelongitud);
                docMedidas.put("dobleareamas", ldobleareamas);
                docMedidas.put("dobleareamenos", ldobleareamenos);
                collMedidas.insert(docMedidas);
            }
            
            Mensajeria.Mensaje("Guardado");
            CargarProyectos();
        } catch (Exception e) {
            Mensajeria.MensajeError(e, "Boton Guardar()");
        }
    }//GEN-LAST:event_jButtonGuardarActionPerformed
    
    private void jButtonProcessActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonProcessActionPerformed
        // TODO add your handling code here:
        CorregirLatitudLongitud();
        
    }//GEN-LAST:event_jButtonProcessActionPerformed
    
    private void jTextFieldElatActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTextFieldElatActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_jTextFieldElatActionPerformed
    
    private void jTextFieldRevisadoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTextFieldRevisadoActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_jTextFieldRevisadoActionPerformed
    
    private void jTextFieldCorregimientoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTextFieldCorregimientoActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_jTextFieldCorregimientoActionPerformed
    
    private void jTextFieldTotalLongitudCorregidaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTextFieldTotalLongitudCorregidaActionPerformed
        // TODO add your handling code here:
}//GEN-LAST:event_jTextFieldTotalLongitudCorregidaActionPerformed
    
    private void jButtonBuscarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonBuscarActionPerformed
        // TODO add your handling code here:
        try {
            LimpiarProyecto();
            LimpiarTabla();
            String lproyecto = jComboBoxProyectos.getSelectedItem().toString();
            if (lproyecto == null || lproyecto.equals("")) {
                Mensajeria.Mensaje("Ingrese el nombre del proyecto");
                return;
            }
            boolean encontrado = false;
            String provincia = "";
            String distrito = "";
            String corregimiento = "";
            String calculado = "";
            String fecha = "";
            String revisado = "";
            String numerodistancias = "";
            String presicionredondeo = "";
            String latitudprecision = "";
            String latitudinicial = "";
            String longitudinicial = "";
            String totalnorte = "";
            String totalsur = "";
            String totaleste = "";
            String totaloeste = "";
            String elat = "";
            String elong = "";
            String ec = "";
            String perimetro = "";
            String prec = "";
            String totallatitudcorregida = "";
            String totallongitudcorregida = "";
            String totalareamas = "";
            String totalareamenos = "";
            String a = "";
            /*
             * 
             */
            
            BasicDBObject query1 = new BasicDBObject();
            query1.put("proyecto", lproyecto);
            curProyectos = collProyectos.find(query1);
            while (curProyectos.hasNext()) {
                // System.out.println("prov "+curProyectos.curr());
                encontrado = true;
                curProyectos.next().get("id");
                if (curProyectos.curr().get("proyecto") != null) {
                    lproyecto = curProyectos.curr().get("proyecto").toString();
                }
                
                
                if (curProyectos.curr().get("provincia") != null) {
                    provincia = curProyectos.curr().get("provincia").toString();
                }
                if (curProyectos.curr().get("distrito") != null) {
                    distrito = curProyectos.curr().get("distrito").toString();
                }
                if (curProyectos.curr().get("corregimiento") != null) {
                    corregimiento = curProyectos.curr().get("corregimiento").toString();
                }
                if (curProyectos.curr().get("calculado") != null) {
                    calculado = curProyectos.curr().get("calculado").toString();
                }
                if (curProyectos.curr().get("fecha") != null) {
                    fecha = curProyectos.curr().get("fecha").toString();
                }
                if (curProyectos.curr().get("revisado") != null) {
                    revisado = curProyectos.curr().get("revisado").toString();
                }
                
                if (curProyectos.curr().get("numerodistancias") != null) {
                    numerodistancias = curProyectos.curr().get("numerodistancias").toString();
                }
                if (curProyectos.curr().get("presicionredondeo") != null) {
                    presicionredondeo = curProyectos.curr().get("presicionredondeo").toString();
                }
                if (curProyectos.curr().get("latitudprecision") != null) {
                    latitudprecision = curProyectos.curr().get("latitudprecision").toString();
                }
                if (curProyectos.curr().get("latitudinicial") != null) {
                    latitudinicial = curProyectos.curr().get("latitudinicial").toString();
                }
                if (curProyectos.curr().get("longitudinicial") != null) {
                    longitudinicial = curProyectos.curr().get("longitudinicial").toString();
                }
                if (curProyectos.curr().get("longitudinicial") != null) {
                    longitudinicial = curProyectos.curr().get("longitudinicial").toString();
                }
                if (curProyectos.curr().get("totalnorte") != null) {
                    totalnorte = curProyectos.curr().get("totalnorte").toString();
                }
                if (curProyectos.curr().get("totalsur") != null) {
                    totalsur = curProyectos.curr().get("totalsur").toString();
                }
                if (curProyectos.curr().get("totaloeste") != null) {
                    totaloeste = curProyectos.curr().get("totaloeste").toString();
                }
                if (curProyectos.curr().get("totaleste") != null) {
                    totaleste = curProyectos.curr().get("totaleste").toString();
                }
                if (curProyectos.curr().get("elat") != null) {
                    elat = curProyectos.curr().get("elat").toString();
                }
                if (curProyectos.curr().get("elong") != null) {
                    elong = curProyectos.curr().get("elong").toString();
                }
                
                if (curProyectos.curr().get("ec") != null) {
                    ec = curProyectos.curr().get("ec").toString();
                }
                if (curProyectos.curr().get("perimetro") != null) {
                    perimetro = curProyectos.curr().get("perimetro").toString();
                }
                if (curProyectos.curr().get("prec") != null) {
                    prec = curProyectos.curr().get("prec").toString();
                }
                if (curProyectos.curr().get("totallatitudcorregida") != null) {
                    totallatitudcorregida = curProyectos.curr().get("totallatitudcorregida").toString();
                }
                if (curProyectos.curr().get("totallongitudcorregida") != null) {
                    totallongitudcorregida = curProyectos.curr().get("totallongitudcorregida").toString();
                }
                if (curProyectos.curr().get("totalareamas") != null) {
                    totalareamas = curProyectos.curr().get("totalareamas").toString();
                }
                if (curProyectos.curr().get("totalareamenos") != null) {
                    totalareamenos = curProyectos.curr().get("totalareamenos").toString();
                }
                if (curProyectos.curr().get("a") != null) {
                    a = curProyectos.curr().get("a").toString();
                }
                break;
            }
            if (!encontrado) {
                Mensajeria.Mensaje("No existe un proyecto con ese nombre...");
                return;
            }
            jTextFieldProyecto.setText(lproyecto);
            jTextFieldProvincia.setText(provincia);
            jTextFieldDistrito.setText(distrito);
            jTextFieldCorregimiento.setText(corregimiento);
            jTextFieldCalculado.setText(calculado);
            jTextFieldFecha.setText(fecha);
            jTextFieldRevisado.setText(revisado);
            jTextFieldNumeroDistancias.setText(numerodistancias);
            jTextFieldPrecisionRendondeo.setText(presicionredondeo);
            jTextFieldLatitudPrecision.setText(latitudprecision);
            jTextFieldLatitudInicial.setText(latitudinicial);
            jTextFieldLongitudInicial.setText(longitudinicial);
            jTextFieldTotalNorte.setText(totalnorte);
            jTextFieldTotalSur.setText(totalsur);
            jTextFieldTotalOeste.setText(totaloeste);
            jTextFieldTotalEste.setText(totaleste);
            jTextFieldElat.setText(elat);
            jTextFieldElong.setText(elong);
            jTextFieldEc.setText(ec);
            jTextFieldPerimetro.setText(perimetro);
            jTextFieldPrec.setText(prec);
            jTextFieldTotalLatitudCorregida.setText(totallatitudcorregida);
            jTextFieldTotalLongitudCorregida.setText(totallongitudcorregida);
            jTextFieldTotalDobleAreaMas.setText(totalareamas);
            jTextFieldTotalDobleAreaMenos.setText(totalareamenos);
            jTextFieldA.setText(a);

            /*
             * 
             */
            
            
            lnumero = "";
            ldistancia = "";
            lcuadrante = "";
            lrumbo = "";
            lcoseno = "";
            lseno = "";
            lnorte = "";
            lsur = "";
            leste = "";
            loeste = "";
            lindlatitud = "";
            lindlongitud = "";
            
            llatitudcorregida = "";
            llongitudcorregida = "";
            lcoordenadalatidud = "";
            lcoordenadalongitud = "";
            ldoblelongitud = "";
            ldobleareamas = "";
            ldobleareamenos = "";
            BasicDBObject query2 = new BasicDBObject();
            query2.put("proyecto", lproyecto);
            curMedidas = collMedidas.find(query2);
            while (curMedidas.hasNext()) {
                
                curMedidas.next().get("id");
                if (curMedidas.curr().get("proyecto") != null) {
                    lproyecto = curProyectos.curr().get("proyecto").toString();
                }
                if (curMedidas.curr().get("numero") != null) {
                    lnumero = curMedidas.curr().get("numero").toString();
                }
                if (curMedidas.curr().get("distancia") != null) {
                    ldistancia = curMedidas.curr().get("distancia").toString();
                }
                if (curMedidas.curr().get("cuadrante") != null) {
                    lcuadrante = curMedidas.curr().get("cuadrante").toString();
                }
                if (curMedidas.curr().get("rumbo") != null) {
                    lrumbo = curMedidas.curr().get("rumbo").toString();
                }
                if (curMedidas.curr().get("coseno") != null) {
                    lcoseno = curMedidas.curr().get("coseno").toString();
                }
                if (curMedidas.curr().get("seno") != null) {
                    lseno = curMedidas.curr().get("seno").toString();
                }
                if (curMedidas.curr().get("norte") != null) {
                    lnorte = curMedidas.curr().get("norte").toString();
                }
                if (curMedidas.curr().get("sur") != null) {
                    lsur = curMedidas.curr().get("sur").toString();
                }
                if (curMedidas.curr().get("este") != null) {
                    leste = curMedidas.curr().get("este").toString();
                }
                if (curMedidas.curr().get("oeste") != null) {
                    loeste = curMedidas.curr().get("oeste").toString();
                }
                if (curMedidas.curr().get("indlatitud") != null) {
                    lindlatitud = curMedidas.curr().get("indlatitud").toString();
                }
                if (curMedidas.curr().get("indlongitud") != null) {
                    lindlongitud = curMedidas.curr().get("indlongitud").toString();
                }
                if (curMedidas.curr().get("latitudcorregida") != null) {
                    llatitudcorregida = curMedidas.curr().get("latitudcorregida").toString();
                }
                
                if (curMedidas.curr().get("longitudcorregida") != null) {
                    llongitudcorregida = curMedidas.curr().get("longitudcorregida").toString();
                }
                if (curMedidas.curr().get("coordenadalatidud") != null) {
                    lcoordenadalatidud = curMedidas.curr().get("coordenadalatidud").toString();
                }
                if (curMedidas.curr().get("coordenadalongitud") != null) {
                    lcoordenadalongitud = curMedidas.curr().get("coordenadalongitud").toString();
                }
                if (curMedidas.curr().get("doblelongitud") != null) {
                    ldoblelongitud = curMedidas.curr().get("doblelongitud").toString();
                }
                if (curMedidas.curr().get("dobleareamas") != null) {
                    ldobleareamas = curMedidas.curr().get("dobleareamas").toString();
                }
                if (curMedidas.curr().get("dobleareamenos") != null) {
                    ldobleareamenos = curMedidas.curr().get("dobleareamenos").toString();
                }
                
                Object[] filas = new Object[19]; // Hay tres columnas en la tabla
                filas[0] = lnumero;
                filas[1] = ldistancia;
                filas[2] = lcuadrante;
                filas[3] = lrumbo;
                filas[4] = lcoseno;
                filas[5] = lseno;
                filas[6] = lnorte;
                filas[7] = lsur;
                filas[8] = leste;
                filas[9] = loeste;
                filas[10] = lindlatitud;
                filas[11] = lindlongitud;
                filas[12] = llatitudcorregida;
                filas[13] = llongitudcorregida;
                filas[14] = lcoordenadalatidud;
                filas[15] = lcoordenadalongitud;
                filas[16] = ldoblelongitud;
                filas[17] = ldobleareamas;
                filas[18] = ldobleareamenos;
                
                modelo.addRow(filas);
            }
        } catch (Exception e) {
            Mensajeria.MensajeError(e, "Boton Buscar()");
        }
    }//GEN-LAST:event_jButtonBuscarActionPerformed
    
    private void jButtonEliminarTodosProyectosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonEliminarTodosProyectosActionPerformed
        // TODO add your handling code here:
        try {
            
          
            
            if (Mensajeria.PreguntaSiNo("Desea eliminar todos proyectos", "Eliminar").equals("si")) {
                
                curMedidas = collMedidas.find();
                while (curMedidas.hasNext()) {
                    collMedidas.remove(curMedidas.next());
                }
                curProyectos = collProyectos.find();
                while (curProyectos.hasNext()) {
                    collProyectos.remove(curProyectos.next());
                }
                
          //      jComboBoxProyectos.removeAllItems();
                LimpiarTabla();
                LimpiarProyecto();
                 CargarProyectos();
                Mensajeria.Mensaje("Se eliminaron todos los proyectos");
            } else {
                Mensajeria.Mensaje("No se eliminaron todos los proyectos");
            }
            
        } catch (Exception e) {
            Mensajeria.MensajeError(e, "Boton EliminarProyectos()");
        }
    }//GEN-LAST:event_jButtonEliminarTodosProyectosActionPerformed
    
    private void jButtonLimpiarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonLimpiarActionPerformed
        // TODO add your handling code here:
        LimpiarProyecto();
        LimpiarTabla();
    }//GEN-LAST:event_jButtonLimpiarActionPerformed
    
    private void jTextFieldTotalDobleAreaMenosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTextFieldTotalDobleAreaMenosActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_jTextFieldTotalDobleAreaMenosActionPerformed
    
    private void jTextFieldAActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTextFieldAActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_jTextFieldAActionPerformed

    private void jButtonEliminarProyectoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonEliminarProyectoActionPerformed
        // TODO add your handling code here:
        try{
              String lproyecto = jComboBoxProyectos.getSelectedItem().toString();
            if (lproyecto == null || lproyecto.equals("")) {
                Mensajeria.Mensaje("Seleccione el proyecto a eliminar");
                return;
            }
              if (Mensajeria.PreguntaSiNo("Desea eliminar proyecto: " + curProyectos.curr().get("proyecto"), "Eliminar").equals("no")) {
                  Mensajeria.Mensaje("No se elimino el proyecto");
                  return;
              }
            BasicDBObject query1 = new BasicDBObject();
            query1.put("proyecto", lproyecto);
            curProyectos = collProyectos.find(query1);
            boolean eliminado= false;
            while (curProyectos.hasNext()) {                
                collProyectos.remove(curProyectos.next()); 
               // curProyectos.next().get("id");
               // if (curProyectos.curr().get("proyecto") != null) {
                //  if (Mensajeria.PreguntaSiNo("Desea eliminar proyecto: " + curProyectos.curr().get("proyecto"), "Eliminar").equals("si")) {
                   //     collProyectos.remove(curProyectos.next());                          
                     //   eliminado = true;
                     //   break;
              //    } 
                    
              //  }}
                eliminado = true;
            }
            if(eliminado){
                Mensajeria.Mensaje("Se elimino el proyecto"); 
                 LimpiarProyecto();
                        LimpiarTabla();
                        CargarProyectos();
            }
            else{
                Mensajeria.Mensaje("No se elimino el proyecto");
            }
          
         } catch (Exception e) {
            Mensajeria.MensajeError(e, "Boton EliminarProyectos()");
        }
    }//GEN-LAST:event_jButtonEliminarProyectoActionPerformed

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            
            public void run() {
                new Lector().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private org.jdesktop.swingx.painter.effects.AbstractAreaEffect abstractAreaEffect1;
    private javax.swing.JButton jButtonActualizar;
    private javax.swing.JButton jButtonAdd;
    private javax.swing.JButton jButtonBuscar;
    private javax.swing.JButton jButtonEliminar;
    private javax.swing.JButton jButtonEliminarProyecto;
    private javax.swing.JButton jButtonEliminarTodosProyectos;
    private javax.swing.JButton jButtonGuardar;
    private javax.swing.JButton jButtonLimpiar;
    private javax.swing.JButton jButtonProcess;
    private javax.swing.JButton jButtonRegresar;
    private javax.swing.JButton jButtonReporte;
    private javax.swing.JComboBox jComboBoxProyectos;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel10;
    private javax.swing.JLabel jLabel11;
    private javax.swing.JLabel jLabel12;
    private javax.swing.JLabel jLabel13;
    private javax.swing.JLabel jLabel14;
    private javax.swing.JLabel jLabel15;
    private javax.swing.JLabel jLabel16;
    private javax.swing.JLabel jLabel17;
    private javax.swing.JLabel jLabel18;
    private javax.swing.JLabel jLabel19;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel20;
    private javax.swing.JLabel jLabel21;
    private javax.swing.JLabel jLabel22;
    private javax.swing.JLabel jLabel23;
    private javax.swing.JLabel jLabel24;
    private javax.swing.JLabel jLabel25;
    private javax.swing.JLabel jLabel26;
    private javax.swing.JLabel jLabel27;
    private javax.swing.JLabel jLabel28;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JLabel jLabel9;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JPanel jPanel6;
    private javax.swing.JPanel jPanelCalculos;
    private javax.swing.JPanel jPanelCorreccion;
    private javax.swing.JPanel jPanelDobleArea;
    private javax.swing.JPanel jPanelProyectos;
    private javax.swing.JPanel jPanelProyectosinterno;
    private javax.swing.JPanel jPanelTotalesCorregidas;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JSeparator jSeparator1;
    private javax.swing.JTabbedPane jTabbedPane1;
    private javax.swing.JTable jTable1;
    private javax.swing.JTextField jTextFieldA;
    private javax.swing.JTextField jTextFieldCalculado;
    private javax.swing.JTextField jTextFieldCorregimiento;
    private javax.swing.JTextField jTextFieldDistrito;
    private javax.swing.JTextField jTextFieldEc;
    private javax.swing.JTextField jTextFieldElat;
    private javax.swing.JTextField jTextFieldElong;
    private javax.swing.JTextField jTextFieldFecha;
    private javax.swing.JTextField jTextFieldLatitudInicial;
    private javax.swing.JTextField jTextFieldLatitudPrecision;
    private javax.swing.JTextField jTextFieldLongitudInicial;
    private javax.swing.JTextField jTextFieldNumeroDistancias;
    private javax.swing.JTextField jTextFieldPerimetro;
    private javax.swing.JTextField jTextFieldPrec;
    private javax.swing.JTextField jTextFieldPrecisionRendondeo;
    private javax.swing.JTextField jTextFieldProvincia;
    private javax.swing.JTextField jTextFieldProyecto;
    private javax.swing.JTextField jTextFieldRevisado;
    private javax.swing.JTextField jTextFieldTotalDobleAreaMas;
    private javax.swing.JTextField jTextFieldTotalDobleAreaMenos;
    private javax.swing.JTextField jTextFieldTotalEste;
    private javax.swing.JTextField jTextFieldTotalLatitudCorregida;
    private javax.swing.JTextField jTextFieldTotalLongitudCorregida;
    private javax.swing.JTextField jTextFieldTotalNorte;
    private javax.swing.JTextField jTextFieldTotalOeste;
    private javax.swing.JTextField jTextFieldTotalSur;
    private javax.swing.JToolBar jToolBar1;
    // End of variables declaration//GEN-END:variables

    private void AgregarFila() {
        try {
            int n = jTable1.getRowCount();
            
            
            String est;
            if (n < 0) {
                if (this.NumeroDistancias == 1) {
                    est = "1-1";
                }
                est = "1-2";
            } else {
                int ini = n + 1;
                int fin = n + 2;
                if (this.NumeroDistancias == n) {
                    fin = 1;
                }
                est = ini + "-" + fin;
            }
            Object[] filas = new Object[17]; // Hay tres columnas en la tabla
            filas[0] = est;
            for (int i = 1; i <= 16; i++) {
                filas[i] = "";
            }
            
            
            modelo.addRow(filas);
        } catch (Exception ex) {
            Mensajeria.MensajeError(ex, "AgregarFila()");
        }
    }
    
    private void jTextFieldGradosActionPerformed(java.awt.event.ActionEvent evt) {
        
        try {
            
            String tmp = this.fieldGrados.getText();
            if (tmp == null || tmp.equals("")) {
                //      sesion.MostrarMensajeAdvertencia("Pago incorrecto", "Ingrese el pago adecuado");
                return;
            }
            
            fila = jTable1.getSelectedRow();
            if (fila == -1) {
                JOptionPane.showMessageDialog(this, "No se selecciono ninguna fila", "Mensaje", JOptionPane.WARNING_MESSAGE);
                return;
            }
            
            Procesar();
            
        } catch (Exception ex) {
            // sesion.MostrarMensajeError("Error ", "Clase: PagosContribuyentesFijosTesoreroAuxiliarFrame.java\njTextFieldPagoActionPerformed()\n " + ex.getMessage().toString());
        }
        
    }
    
    private void Procesar() {
        try {
            // fila = jTable1.getSelectedRow();
            if (fila == -1) {
                JOptionPane.showMessageDialog(this, "No se selecciono ninguna fila", "Mensaje", JOptionPane.WARNING_MESSAGE);
                return;
            }
            String Numero = String.valueOf(jTable1.getValueAt(fila, 0));
            if (Numero == null || Numero.equals("")) {
                Mensajeria.Mensaje("Ingrese el numero");
                return;
            }
            String vDistancia = String.valueOf(jTable1.getValueAt(fila, 1));
            if (vDistancia == null || vDistancia.equals("")) {
                Mensajeria.Mensaje("Ingrese la distancia en  EST " + Numero);
                
                return;
            }
            
            Double Distancia = Double.parseDouble(vDistancia);
            if (Distancia == null) {
                Mensajeria.Mensaje("La distancia no es un valor numerico");
                return;
            }
            String cuadrante = String.valueOf(jTable1.getValueAt(fila, 2));
            if (cuadrante == null || cuadrante.equals("")) {
                Mensajeria.Mensaje("Seleccione el cuadrante en EST " + Numero);
                return;
            }
            
            
            
            
            
            String Rumbo = String.valueOf(jTable1.getValueAt(fila, 3));
            if (Rumbo == null || Rumbo.equals("")) {
                Mensajeria.Mensaje("Ingrese un rumbo valido en  EST " + Numero);
                return;
            }
            
            Integer latitude_sign = (cuadrante.equals("NE") || cuadrante.equals("NW")) ? 1 : -1;
            Double latitude_deg = 0.0;
            Double latitude_min = 0.0;
            Double latitude_sec = 0.0;
            if (Rumbo.trim().length() != 7) {
                Mensajeria.Mensaje("Ingrese un rumbo valido: 00.1223");
                return;
            }
            if (Rumbo.indexOf(".") == -1) {
                Mensajeria.Mensaje("No se encontro . para determinar los grados");
                return;
            }
            
            
            
            String grados = Rumbo.substring(0, Rumbo.indexOf("."));
            Rumbo = Rumbo.substring(Rumbo.indexOf(".") + 1, Rumbo.length());
            if (grados != null || grados.equals("")) {
                latitude_deg = Double.parseDouble(grados);
            } else {
                Mensajeria.Mensaje("No se encontro . para determinar los grados");
                return;
            }
            
            
            
            String minutos = Rumbo.substring(0, 2);
            if (minutos != null || minutos.equals("")) {
                latitude_min = Double.parseDouble(minutos);
            } else {
                Mensajeria.Mensaje("No se encontro los minutos minutos");
                return;
            }
            
            
            
            String segundos = Rumbo.substring(2, 4);
            
            if (segundos != null || segundos.equals("")) {
                latitude_sec = Double.parseDouble(segundos);
            } else {
                Mensajeria.Mensaje("No se encontro \" para determinar segundos");
                return;
            }
            
            
            
            if (latitude_deg > 90 || latitude_deg < -90) {
                Mensajeria.Mensaje("Grados de latitud invalidos");
                return;
            }
            if (latitude_min > 60 || latitude_min < 0) {
                Mensajeria.Mensaje("Minutos de latitud invalidos");
                return;
            }
            
            
            if (latitude_sec > 60 || latitude_sec < 0) {
                Mensajeria.Mensaje("Segundos de latitud invalidos");
                return;
            }

            /*
             * Convertir de grados A radianes
             */
            
            
            Double radianes = Matematicas.GradosToRadianes(latitude_deg, latitude_min, latitude_sec);
            if (radianes == null) {
                Mensajeria.Mensaje("Los radianes no son validos");
                return;
            }
            //  Mensajeria.Mensaje("Radianes " + radianes);
            Double coseno = Math.cos(radianes);
            Double seno = Math.sin(radianes);
            /*
             * Redondeo
             */
            coseno = Matematicas.Redondear(coseno, precision);
            seno = Matematicas.Redondear(seno, precision);
            
            
            
            String m = "";
            Double latitud = Distancia * coseno;
            Double longitud = Distancia * seno;
            latitud = Matematicas.Redondear(latitud, precisionLatitud);
            longitud = Matematicas.Redondear(longitud, precisionLatitud);
            
            
            
            jTable1.setValueAt(coseno, fila, 4);
            jTable1.setValueAt(seno, fila, 5);
            if (cuadrante.equals("NE")) {
                
                
                jTable1.setValueAt(latitud, fila, 6);
                jTable1.setValueAt("", fila, 7);
                jTable1.setValueAt(longitud, fila, 8);
                jTable1.setValueAt("", fila, 9);
                m = "NE";
            } else {
                if (cuadrante.equals("NW")) {
                    
                    
                    jTable1.setValueAt(latitud, fila, 6);
                    jTable1.setValueAt("", fila, 7);
                    jTable1.setValueAt("", fila, 8);
                    jTable1.setValueAt(longitud, fila, 9);
                    m = "NW";
                } else {
                    
                    if (cuadrante.equals("SE")) {
                        
                        jTable1.setValueAt("", fila, 6);
                        jTable1.setValueAt(latitud, fila, 7);
                        jTable1.setValueAt(longitud, fila, 8);
                        jTable1.setValueAt("", fila, 9);
                        m = "SE";
                    } else {
                        if (cuadrante.equals("SW")) {
                            
                            jTable1.setValueAt("", fila, 6);
                            jTable1.setValueAt(latitud, fila, 7);
                            jTable1.setValueAt("", fila, 8);
                            jTable1.setValueAt(longitud, fila, 9);
                            m = "SW";
                        }
                    }
                }
            }
            CalcularTotales();
            
            
        } catch (Exception ex) {
            Mensajeria.MensajeError(ex, "Procesar()");
        }
    }
    
    private boolean VerificarSiFueAgregado() {
        try {
            
            int n = jTable1.getRowCount();
            if (n < 0) {
                JOptionPane.showMessageDialog(this, "Numero de filas negativo ", "Error", JOptionPane.ERROR_MESSAGE);
                return false;
            }
            
            for (int i = 0; i < n; i++) {
                
                String idRegimenTable = String.valueOf(jTable1.getValueAt(i, 1));
//                if (idRegimenTable.equals(idRegimen)) {
                return true;
                //       }

            }
            
            
            return false;
        } catch (Exception ex) {
            // sesion.MostrarMensajeError("Error ", "Clase: PagosContribuyentesFijosTesoreroAuxiliarFrame.java\nVerificarSiFueAgregado()\n " + ex.getMessage().toString());
        }
        return true;
        
    }

    /*
     * 
     * Calcula los totales
     */
    private void CalcularTotales() {
        try {
            Double TotalNorte = 0.0;
            Double TotalSur = 0.0;
            Double TotalEste = 0.0;
            Double TotalOeste = 0.0;
            Double Valor;
            Double Elat = 0.0;
            Double Elong = 0.0;
            Double Ec = 0.0;
            Double TDist = 0.0;
            Double Prec = 0.0;
            int n = jTable1.getRowCount();
            if (n != -1) {
                for (int i = 0; i < n; i++) {
                    String vDist = String.valueOf(jTable1.getValueAt(i, 1));
                    if (!vDist.equals("")) {
                        Valor = Double.parseDouble(vDist);
                        TDist += Valor;
                    }
                    
                    String vValor = String.valueOf(jTable1.getValueAt(i, 6));
                    if (vValor.equals("")) {
                        Valor = 0.0;
                    } else {
                        Valor = Double.parseDouble(vValor);
                        TotalNorte += Valor;
                    }
                    vValor = String.valueOf(jTable1.getValueAt(i, 7));
                    if (vValor.equals("")) {
                        Valor = 0.0;
                    } else {
                        Valor = Double.parseDouble(vValor);
                        TotalSur += Valor;
                    }
                    vValor = String.valueOf(jTable1.getValueAt(i, 8));
                    if (vValor.equals("")) {
                        Valor = 0.0;
                    } else {
                        Valor = Double.parseDouble(vValor);
                        TotalEste += Valor;
                    }
                    vValor = String.valueOf(jTable1.getValueAt(i, 9));
                    if (vValor.equals("")) {
                        Valor = 0.0;
                    } else {
                        Valor = Double.parseDouble(vValor);
                        TotalOeste += Valor;
                    }
                    
                }
                
                TotalNorte = Matematicas.Redondear(TotalNorte, precisionLatitud);
                TotalSur = Matematicas.Redondear(TotalSur, precisionLatitud);
                TotalEste = Matematicas.Redondear(TotalEste, precisionLatitud);
                TotalOeste = Matematicas.Redondear(TotalOeste, precisionLatitud);
                if (TotalNorte == TotalSur) {
                    Elat = 0.0;
                } else {
                    Elat = Math.abs(TotalNorte - TotalSur);
                    Elat = Matematicas.Redondear(Elat, precisionLatitud);
                }
                if (TotalEste == TotalOeste) {
                    Elong = 0.0;
                } else {
                    Elong = Math.abs(TotalEste - TotalOeste);
                    Elong = Matematicas.Redondear(Elong, precisionLatitud);
                }
                if (Elat == 0.0 && Elong == 0.0) {
                    Ec = 0.0;
                    Prec = 0.0;
                } else {
                    Ec = Math.sqrt((Math.pow(Elat, 2) + Math.pow(Elong, 2)));
                    Ec = Matematicas.Redondear(Ec, precisionLatitud);
                    Prec = TDist / Ec;
                    Prec = Matematicas.Redondear(Prec, precisionLatitud);
                }
                
                
            }
            jTextFieldTotalNorte.setText(TotalNorte.toString());
            jTextFieldTotalSur.setText(TotalSur.toString());
            jTextFieldTotalEste.setText(TotalEste.toString());
            jTextFieldTotalOeste.setText(TotalOeste.toString());
            jTextFieldElat.setText(Elat.toString());
            jTextFieldElong.setText(Elong.toString());
            jTextFieldEc.setText(Ec.toString());
            jTextFieldPerimetro.setText(TDist.toString());
            jTextFieldPrec.setText(Prec.toString());
            
        } catch (Exception ex) {
            Mensajeria.MensajeError(ex, "CalcularTotales()");
            
        }
    }

    /**
     * Elimina la ultima fila
     */
    private void EliminarUltimaFila() {
        try {
            int n = jTable1.getRowCount();
            if (n == 0) {
                Mensajeria.Mensaje("No existe ninguna fila en la tabla");
                return;
            }
            
            modelo.removeRow(n - 1);
            CalcularTotales();
        } catch (Exception ex) {
            Mensajeria.MensajeError(ex, "EliminarUltimaFila()");
            
        }
    }
    
    private void Actualizar() {
        try {
            String t = jTextFieldPrecisionRendondeo.getText();
            if (t == null || t.equals("")) {
                Mensajeria.Mensaje("Debe ingresar la precision");
                return;
                
            }
            precision = Integer.parseInt(jTextFieldPrecisionRendondeo.getText());
            if (precision == null) {
                Mensajeria.Mensaje("Ingrese un numero entero valido en la precision");
                return;
            }
             precisionLatitud = Integer.parseInt(jTextFieldLatitudPrecision.getText());
            if (precisionLatitud == null) {
                Mensajeria.Mensaje("Ingrese un numero entero valido en la precision");
                jTextFieldLatitudPrecision.requestFocus();
                return;
            }
            int n = jTable1.getRowCount();
            if (n == 0) {
                Mensajeria.Mensaje("No existe ninguna fila en la tabla");
                return;
            }
            
            
            
            for (int i = 0; i < n; i++) {
                this.fila = i;
                Procesar();
                
            }
            
        } catch (Exception ex) {
            Mensajeria.MensajeError(ex, "Actualizar()");
        }
    }
    
    private void CorregirLatitudLongitud() {
        try {
            Actualizar();
            Double TotalNorte = Double.parseDouble(jTextFieldTotalNorte.getText());
            Double TotalSur = Double.parseDouble(jTextFieldTotalSur.getText());
            Double TotalEste = Double.parseDouble(jTextFieldTotalEste.getText());
            Double TotalOeste = Double.parseDouble(jTextFieldTotalOeste.getText());
            boolean isIgualLatitud = false;
            boolean isIgualLongitud = false;
            Double Ec = Double.parseDouble(jTextFieldEc.getText());
            Double Perimetro = Double.parseDouble(jTextFieldPerimetro.getText());
            Double Elat = Double.parseDouble(jTextFieldElat.getText().toString());
            Double Elong = Double.parseDouble(jTextFieldElong.getText().toString());
            if (TotalNorte == TotalSur) {
                isIgualLatitud = true;
            }
            if (TotalEste == TotalOeste) {
                isIgualLongitud = true;
            }
            
            int n = jTable1.getRowCount();
            if (n == 0) {
                Mensajeria.Mensaje("No existe ninguna fila en la tabla");
                return;
            }
            
            
            String Norte, Sur, Este, Oeste;
            Double valor;
            Double TotalLatitudCorregida = 0.0;
            Double TotalLongitudCorregida = 0.0;
            Double Distancia = 0.0;
            Double Plat = 0.0;
            Double Plong = 0.0;
            Double LatitudInicial = Double.parseDouble(jTextFieldLatitudInicial.getText().toString());
            Double LongitudInicial = Double.parseDouble(jTextFieldLongitudInicial.getText().toString());
            Double CoordenadasT = 0.0;
            for (int i = 0; i < n; i++) {
                this.fila = i;
                /*
                 * latitud
                 */
                Distancia = Double.parseDouble(jTable1.getValueAt(i, 1).toString());
                Plat = (Elat / Perimetro) * Distancia;
                Plat = Matematicas.Redondear(Plat, precisionLatitud);
                
                Norte = String.valueOf(jTable1.getValueAt(i, 6));
                if (Norte == null || Norte.equals("")) {
                    // verificar el Sur
                    Sur = String.valueOf(jTable1.getValueAt(i, 7));
                    if (Sur == null || Sur.equals("")) {
                        //indica que no tiene valor para el norte ni el sur
                        Mensajeria.Mensaje("No hay valores para N o S en EST= " + jTable1.getValueAt(i, 0));
                        return;
                    } else {
                        valor = Double.parseDouble(Sur);
                        if (TotalSur > TotalNorte) {
                            valor -= Plat;
                        } else {
                            valor += Plat;
                        }
                        valor *= -1;
                        TotalLatitudCorregida += valor;
                        valor = Matematicas.Redondear(valor, precisionLatitud);
                        
                        jTable1.setValueAt(Plat, i, 10);
                        jTable1.setValueAt(valor, fila, 12);
                        CoordenadasT = LatitudInicial + valor;
                        CoordenadasT = Matematicas.Redondear(CoordenadasT, precisionLatitud);
                        jTable1.setValueAt(CoordenadasT, i, 14);
                        LatitudInicial = CoordenadasT;
                        
                    }
                } else {
                    valor = Double.parseDouble(Norte);
                    if (TotalNorte > TotalSur) {
                        valor -= Plat;
                    } else {
                        valor += Plat;
                    }
                    TotalLatitudCorregida += valor;
                    valor = Matematicas.Redondear(valor, precisionLatitud);
                    jTable1.setValueAt(valor, fila, 12);
                    jTable1.setValueAt(Plat, i, 10);
                    CoordenadasT = LatitudInicial + valor;
                    CoordenadasT = Matematicas.Redondear(CoordenadasT, precisionLatitud);
                    jTable1.setValueAt(CoordenadasT, i, 14);
                    LatitudInicial = CoordenadasT;
                }
                /*
                 * longitud
                 */
                Plong = (Elong / Perimetro) * Distancia;
                System.out.println(" Elong "+Elong + " / Perimetro "+ Perimetro + " * Distancia "+ Distancia);
                System.out.println("Plong = "+Plong);
            int cifras=(int) Math.pow(10,4);

                System.out.println("MAth "+ Math.rint(Plong*cifras)/cifras);

           
                Plong = Matematicas.Redondear(Plong, precisionLatitud);
                 System.out.println("Plong Redondeado = "+Plong);
                Este = String.valueOf(jTable1.getValueAt(i, 8));
                if (Este == null || Este.equals("")) {
                    // verificar el Sur
                    Oeste = String.valueOf(jTable1.getValueAt(i, 9));
                    if (Oeste == null || Oeste.equals("")) {
                        //indica que no tiene valor para el norte ni el sur
                        Mensajeria.Mensaje("No hay valores para E o W en EST= " + jTable1.getValueAt(i, 0));
                        return;
                    } else {
                        valor = Double.parseDouble(Oeste);
                        if (TotalOeste > TotalEste) {
                            valor -= Plong;
                        } else {
                            valor += Plong;
                        }
                        valor *= -1;
                        TotalLatitudCorregida += valor;
                        valor = Matematicas.Redondear(valor, precisionLatitud);
                        jTable1.setValueAt(valor, fila, 13);
                        jTable1.setValueAt(Plong, i, 11);
                        CoordenadasT = LongitudInicial + valor;
                        CoordenadasT = Matematicas.Redondear(CoordenadasT, precisionLatitud);
                        jTable1.setValueAt(CoordenadasT, i, 15);
                        LongitudInicial = CoordenadasT;
                    }
                } else {
                    valor = Double.parseDouble(Este);
                    if (TotalEste > TotalOeste) {
                        valor -= Plong;
                    } else {
                        valor += Plong;
                    }
                    TotalLatitudCorregida += valor;
                    valor = Matematicas.Redondear(valor, precisionLatitud);
                    jTable1.setValueAt(valor, fila, 13);
                    jTable1.setValueAt(Plong, i, 11);
                    
                    CoordenadasT = LongitudInicial + valor;
                    CoordenadasT = Matematicas.Redondear(CoordenadasT, precisionLatitud);
                    jTable1.setValueAt(CoordenadasT, i, 15);
                    LongitudInicial = CoordenadasT;
                }
                
            }
            /*
             * Encontrar doble longitud
             */
            Double lcfirst = Double.parseDouble(jTable1.getValueAt(0, 13).toString());
            Double lcold = lcfirst;
            Double lcnew;
            Double lcsumar = 0.0;
            for (int i = 1; i < n; i++) {
                this.fila = i;
                /*
                 * latitud
                 */
                lcnew = Double.parseDouble(jTable1.getValueAt(i, 13).toString());
                if (lcold >= 0 && lcnew >= 0) {
                    lcsumar = (lcold * 2) + lcnew;
                    break;
                } else {
                    lcold = lcnew;
                }
            }
            // si recorre toda la tabla y no encuentra verificar el ultimo con el primero
            if (lcsumar == 0.0) {
                if (lcold >= 0.0 && lcfirst >= 0.0) {
                    lcsumar = (lcold * 2) + lcfirst;
                }
            }
            
            if (lcsumar == 0.0) {
                Mensajeria.Mensaje("No hay secuencia de positivos para la doble longitud");
            } else {
                Double dobleCoordenada;
                dobleCoordenada = Matematicas.Redondear(lcsumar, precisionLatitud);
                jTable1.setValueAt(dobleCoordenada, 0, 16);
                Double v, r = 0.0, vs;
                       for (int i = 1; i < n; i++) {
                    this.fila = i;
                    v = Double.parseDouble(jTable1.getValueAt(i - 1, 13).toString());
                    vs = Double.parseDouble(jTable1.getValueAt(i, 13).toString());
                    r = lcsumar + v + vs;
                    
                    dobleCoordenada = Matematicas.Redondear(r, precisionLatitud);
                    jTable1.setValueAt(dobleCoordenada, i, 16);
                    lcsumar = r;
                }
                
            }
            //la ultima fila

            //Doble Area
            Double lc = 0.0;
            Double dl = 0.0;
            Double totalAreaMas = 0.0;
            Double totalAreaMenos = 0.0;
            Double r = 0.0;
            
            for (int i = 0; i < n; i++) {
                this.fila = i;
                
                lc = Double.parseDouble(jTable1.getValueAt(i, 12).toString());
                dl = Double.parseDouble(jTable1.getValueAt(i, 16).toString());
                r = lc * dl;
                r = Matematicas.Redondear(r, precisionLatitud);
                if (r > 0) {
                    jTable1.setValueAt(r, i, 17);
                    totalAreaMas += r;
                } else {
                    r = Math.abs(r);
                    jTable1.setValueAt(r, i, 18);
                    totalAreaMenos += r;
                }
            }
            Double a = Math.abs(totalAreaMas - totalAreaMenos) / 2;
            a = Matematicas.Redondear(a, precisionLatitud);
            totalAreaMas = Matematicas.Redondear(totalAreaMas, precisionLatitud);
            totalAreaMenos = Matematicas.Redondear(totalAreaMenos, precisionLatitud);
            jTextFieldA.setText(a.toString());
            jTextFieldTotalDobleAreaMas.setText(totalAreaMas.toString());
            jTextFieldTotalDobleAreaMenos.setText(totalAreaMenos.toString());
            
            TotalLatitudCorregida = Matematicas.Redondear(TotalLatitudCorregida, precisionLatitud);
            TotalLongitudCorregida = Matematicas.Redondear(TotalLongitudCorregida, precisionLatitud);
            jTextFieldTotalLatitudCorregida.setText(TotalLatitudCorregida.toString());
            jTextFieldTotalLongitudCorregida.setText(TotalLongitudCorregida.toString());
            jButtonGuardar.setEnabled(true);
        } catch (Exception ex) {
            Mensajeria.MensajeError(ex, "CorregirLatitudLongitud()");
        }
    }
    
    private static void insertarDocumento(DBCollection coll, String key, String valor) {
        BasicDBObject doc = new BasicDBObject();
        doc.put(key, valor);
        coll.insert(doc);
        
    }
    
    private void CargarProyectos() {
        try {
           
            jComboBoxProyectos.removeAllItems();
            boolean existe =false;
            if(proyectoController1.SelectAll()){
                for(Proyecto p:proyectoController1.getProyectolist()){
                    jComboBoxProyectos.addItem(p.getProyecto());
                }
                existe = true;
            }
            
      
          
                jButtonEliminarProyecto.setEnabled(existe);
                jButtonEliminarTodosProyectos.setEnabled(existe);
            
            
        } catch (Exception e) {
            Mensajeria.MensajeError(e, "CargarProyectos()");
        }
        
    }
    
    private void LimpiarProyecto() {
        jTextFieldProyecto.setText("");
        jTextFieldProvincia.setText("");
        jTextFieldDistrito.setText("");
        jTextFieldCorregimiento.setText("");
        jTextFieldCalculado.setText("");
        jTextFieldFecha.setText("");
        jTextFieldRevisado.setText("");
        jTextFieldNumeroDistancias.setText("");
        
        jTextFieldTotalNorte.setText("");
        jTextFieldTotalSur.setText("");
        jTextFieldTotalEste.setText("");
        jTextFieldTotalOeste.setText("");
        jTextFieldElat.setText("");
        jTextFieldElong.setText("");
        jTextFieldEc.setText("");
        jTextFieldPerimetro.setText("");
        jTextFieldPrec.setText("");
        jTextFieldTotalLatitudCorregida.setText("");
        jTextFieldTotalLongitudCorregida.setText("");
        jTextFieldTotalDobleAreaMas.setText("");
        jTextFieldTotalDobleAreaMenos.setText("");
        jTextFieldA.setText("");
        
    }
    
    private void LimpiarTabla() {
        try {
            if (modelo != null) {
                while (modelo.getRowCount() > 0) {
                    modelo.removeRow(0);
                }
            }
        } catch (Exception e) {
            Mensajeria.MensajeError(e, "LimpiarTabla()");
        }
    }
}
